home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2004 #11
/
Amiga Plus CD - 2004 - No. 11.iso
/
AmiSoft
/
Util
/
conv
/
Acvt.lha
/
Acvt 1.07
/
sources
/
autil.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
2001-03-08
|
3KB
|
140 lines
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include "autil.h"
void Peecize( char* szPC, char* szAtari );
//converts 8+3 Atari fname to it's PC equivalent
void ADos2MsDos( char* szMsDos, char* szADos )
{
char szName[ 9 ];
strncpy( szName, szADos, 8 );
szName[ 8 ] = '\0';
char szExt[ 4 ];
strncpy( szExt, szADos + 8, 3 );
szExt[ 3 ] = '\0';
Peecize( szName, szName );
Peecize( szExt, szExt );
if ( !*szName )
strcpy( szName, "out" );
strcpy( szMsDos, szName );
if ( *szExt )
{
strcat( szMsDos, "." );
strcat( szMsDos, szExt );
}
}
//kind of 'good-for-dos' filter
void Peecize( char* szPC, char* szAtari )
{
int iLen = strlen( szAtari );
while( iLen-- )
{
//filter off the inverse chars
char c = *( szAtari++ ) & 0x7F;
//filter spaces
if ( c == ' ' )
continue;
//filter unprintables
if ( !isprint( c ) )
c = '_';
//filter other 'ugly' characters :)
switch( c )
{
case '*':
case ':':
case '\"':
case ',':
case '.':
case '|':
case '?':
case '/':
case '\\':
c = '_';
break;
}
*( szPC++ ) = c;
}
*szPC = '\0';
}
//converts any Atari name to it's PC equivalent
void GuessBestFnameFromAtari( char* szDest, char* szSrc, char* szExt )
{
char szTemp[ 255 ];
Peecize( szTemp, szSrc );
GuessBestFnameFromPC( szDest, szTemp, szExt );
}
//changes file extension
void GuessBestFnameFromPC( char* szDest, char* szSrc, char* szExt, char* szAdd )
{
char szTemp[ 255 ];
char szGoodSrc[ 255 ];
_fixpath( szSrc, szGoodSrc );
char* szSl = strrchr( szGoodSrc, '/' );
if ( szSl )
strcpy( szTemp, szSl + 1 );
else
strcpy( szTemp, szGoodSrc );
char* szDot = strrchr( szTemp, '.' );
if ( szDot )
*szDot = '\0';
if ( !strlen( szTemp ) )
strcpy( szTemp, "out" );
strcpy( szDest, szTemp );
if ( szAdd )
strcat( szDest, szAdd );
strcat( szDest, "." );
strcat( szDest, szExt );
}
//is memory block empty?
BOOL IsBlockEmpty( BYTE* p, int iLen )
{
while( iLen-- )
{
if ( *( p++ ) )
return FALSE;
}
return TRUE;
}